package integracion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Statement;
import java.util.ArrayList;

import share.Componente;

public class ComponenteDAO
{

	private final Connection conn;

	public ComponenteDAO(Connection conn)
	{
		this.conn = conn;
	}

	public boolean insert(Componente componente)
	{
		Statement ps;

		try
		{
			String consulta="INSERT INTO componente VALUES ("+"null,'"+componente.getNombre()+"','"+componente.getDescripcion()+"');";
			System.out.println(consulta);
			ps = conn.createStatement();
			ps.executeUpdate(consulta);
		}
		catch (SQLException e)
		{

			e.printStackTrace();
		}

		return false;
	}

	public Componente getComponenteByNick(String nick)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("select * from componente where nombre=?");
			ps.setString(1, nick);

			ResultSet rs = ps.executeQuery();
			if(rs.next())
			{
				Componente componente = new Componente();
				componente.setId(rs.getInt("codigo"));
				componente.setNombre(rs.getString("nombre"));
				componente.setDescripcion(rs.getString("descripcion"));
				return componente;
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;

	}

	public Componente getComponenteById(int id)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("select * from componente where codigo_componente=?");
			ps.setInt(1, id);

			ResultSet rs = ps.executeQuery();
			if(rs.next())
			{

				Componente componente = new Componente();
				componente.setId(rs.getInt("codigo_componente"));
				componente.setNombre(rs.getString("nombre"));
				componente.setDescripcion(rs.getString("descripcion"));
				return componente;
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;

	}

	public boolean eliminarComponenteId(int id)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("delete from componente where codigo_componente="+id+";");
			ps.executeUpdate();
			return true;

		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return false;

	}

	public void modificar(Componente componente)
	{
		Statement ps;

		try
		{	String consulta="UPDATE componente set nombre= '"+componente.getNombre()+"',descripcion= '"+componente.getDescripcion()+"' where codigo_componente= "+componente.getId()+";";
			System.out.println(consulta);
			ps = conn.createStatement();
			ps.executeUpdate(consulta);
		}
		catch (SQLException e)
		{

			e.printStackTrace();
		}

		return;
	}

	public ArrayList<Componente> getLista()
	{
		ResultSet rs;
		try
		{
			rs = conn.createStatement().executeQuery("select * from componente");
			ArrayList<Componente> lista = new ArrayList<Componente>();
			while(rs.next())
			{

				Componente componente = new Componente();
				componente.setId(rs.getInt("codigo_componente"));
				componente.setNombre(rs.getString("nombre"));
				componente.setDescripcion(rs.getString("descripcion"));

				lista.add(componente);
			}
			return lista;
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;

	}
}
